package com.naiterui.ehp.bs.doctor.vo;

import java.io.Serializable;
import java.util.Date;

import org.apache.commons.lang3.StringUtils;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.naiterui.ehp.bp.domain.NoticeInfo;
import com.naiterui.ehp.bs.doctor.utils.ImageUrlUtil;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

/**
 * APP端 系统公告VO

 * @since 2.3.0
 */
@ApiModel(value = "NoticePageVO", description = "公告信息VO[2.13修改]")
public class NoticePageVO implements Serializable {

    /**
     * 字段或域定义：<code>serialVersionUID</code>
     */
    private static final long serialVersionUID = -6021987164231564560L;

    /**
     * 公告id ：<code>id</code>
     */
    @ApiModelProperty(value = "公告id")
    private Long id;
    /**
     * 公告标题：<code>title</code>
     */
    @ApiModelProperty(value = "公告标题")
    private String title;
    /**
     * 公告开始时间：<code>startTime</code>
     */
    @ApiModelProperty(value = "开始时间")
    private Date startTime;
    /**
     * 公告结束时间：<code>endTime</code>
     */
    @ApiModelProperty(value = "结束时间")
    private Date endTime;
    /**
     * 公告状态：<code>status</code>
     */
    @ApiModelProperty(value = "公告状态")
    private Integer status;
    /**
     * 公告主题id：<code>topicId</code>
     */
    @ApiModelProperty(value = "公告主题id")
    private Long topicId;
    /**
     * 公告主题：<code>topic</code>
     */
    @ApiModelProperty(value = "公告主题名称")
    private String topic;
    /**
     * 公告类型：<code>noticeType</code>
     */
    @ApiModelProperty(value = "公告类型[1：图文,2：外链,3：纯文本]")
    private Integer noticeType;
    /**
     * 公告封面图：<code>coverImg</code>
     */
    @ApiModelProperty(value = "封面图片")
    private String coverImg;
    /**
     * 公告封面图正文是否显示：<code>showCoverImg</code>
     */
    @ApiModelProperty(value = "封面图片是否在正文显示[0:否,1:是]")
    private Integer showCoverImg;
    /**
     * 公告正文：<code>content</code>
     */
    @ApiModelProperty(value = "公告正文")
    @JsonInclude(Include.NON_NULL)
    private String content;
    /**
     * 公告正文(html转码后)：<code>content</code>
     */
    @ApiModelProperty(value = "公告正文(html转码后)")
    @JsonInclude(Include.NON_NULL)
    private String decodeContent;

    /** APP按钮文案 */
    @ApiModelProperty(value = "APP按钮文案[2.13新增]")
    private String buttonComment;

    @ApiModelProperty(value = "宣教id[2.13新增]")
    private Long eduId;             // 宣教id

    @ApiModelProperty(value = "宣教标题[2.13新增]")
    private String eduTitle;        // 宣教标题

    /** 宣教来源 */
    @ApiModelProperty(value = "宣教来源[2.13新增]")
    private String eduOrigin;
    /** 宣教链接URL */
    @ApiModelProperty(value = "宣教链接URL[2.13新增]")
    private String eduUrl;
    /** 患者阅读数 */
    @ApiModelProperty(value = "患者阅读数[2.13新增]")
    private int readCount;

    /** 超链接指向哪里[1：宣教页,2：个人中心] */
    @ApiModelProperty(value = "超链接指向哪里[1：个人中心,2：宣教页][2.13新增]")
    private Integer urlType;
    /** 是否可分享：0/否；1/是 */
    @ApiModelProperty(value = "是否可分享：0/否；1/是[2.17新增]")
    private Integer share;

    /**
     * @param decodeContent 对域 decodeContent 的设置方法.
     */
    public void setDecodeContent(String decodeContent) {
        this.decodeContent = decodeContent;
    }

    /**
     * 根据实体构建VO
     * @param noticeInfo
     */
    public NoticePageVO(NoticeInfo noticeInfo) {

        String coverImg = noticeInfo.getCoverImg();
        if (StringUtils.isNotEmpty(coverImg)) {
            this.coverImg = ImageUrlUtil.genNoticePath(noticeInfo.getCoverImg());
            this.showCoverImg = noticeInfo.getShowCoverImg();
        }
        this.endTime = noticeInfo.getEndTime();
        this.id = noticeInfo.getId();
        this.noticeType = noticeInfo.getNoticeType();
        this.startTime = noticeInfo.getStartTime();
        this.status = noticeInfo.getStatus();
        this.title = noticeInfo.getTitle();
        this.topicId = noticeInfo.getTopicId();
        this.share = (null != noticeInfo.getShare() && !noticeInfo.getShare()) ? NoticeInfo.SHART_N : NoticeInfo.SHARE_Y;
        // TODO
        // TODO
    }

    /**
     * @return Long 取得域 id 的方法。
     */
    public Long getId() {
        return this.id;
    }

    /**
     * @return String 取得域 title 的方法。
     */
    public String getTitle() {
        return this.title;
    }

    /**
     * @param title 对域 title 的设置方法.
     */
    public void setTitle(String title) {
        this.title = title;
    }

    /**
     * @return Date 取得域 startTime 的方法。
     */
    public Date getStartTime() {
        return this.startTime;
    }

    /**
     * @param startTime 对域 startTime 的设置方法.
     */
    public void setStartTime(Date startTime) {
        this.startTime = startTime;
    }

    /**
     * @return Date 取得域 endTime 的方法。
     */
    public Date getEndTime() {
        return this.endTime;
    }

    /**
     * @param endTime 对域 endTime 的设置方法.
     */
    public void setEndTime(Date endTime) {
        this.endTime = endTime;
    }

    /**
     * @return Integer 取得域 status 的方法。
     */
    public Integer getStatus() {
        return this.status;
    }

    /**
     * @param status 对域 status 的设置方法.
     */
    public void setStatus(Integer status) {
        this.status = status;
    }

    /**
     * @return Long 取得域 topicId 的方法。
     */
    public Long getTopicId() {
        return this.topicId;
    }

    /**
     * @param topicId 对域 topicId 的设置方法.
     */
    public void setTopicId(Long topicId) {
        this.topicId = topicId;
    }

    /**
     * @return String 取得域 topic 的方法。
     */
    public String getTopic() {
        return this.topic;
    }

    /**
     * @param topic 对域 topic 的设置方法.
     */
    public void setTopic(String topic) {
        this.topic = topic;
    }

    /**
     * @return Integer 取得域 noticeType 的方法。
     */
    public Integer getNoticeType() {
        return this.noticeType;
    }

    /**
     * @param noticeType 对域 noticeType 的设置方法.
     */
    public void setNoticeType(Integer noticeType) {
        this.noticeType = noticeType;
    }

    /**
     * @return String 取得域 coverImg 的方法。
     */
    public String getCoverImg() {
        return this.coverImg;
    }

    /**
     * @param coverImg 对域 coverImg 的设置方法.
     */
    public void setCoverImg(String coverImg) {
        this.coverImg = coverImg;
    }

    /**
     * @return Integer 取得域 showCoverImg 的方法。
     */
    public Integer getShowCoverImg() {
        return this.showCoverImg;
    }

    /**
     * @param showCoverImg 对域 showCoverImg 的设置方法.
     */
    public void setShowCoverImg(Integer showCoverImg) {
        this.showCoverImg = showCoverImg;
    }

    /**
     * @param id 对域 id 的设置方法.
     */
    public void setId(Long id) {
        this.id = id;
    }

    /**
     * @return String 取得域 content 的方法。
     */
    public String getContent() {
        return this.content;
    }

    /**
     * @param content 对域 content 的设置方法.
     */
    public void setContent(String content) {
        this.content = content;
    }

    public NoticePageVO() {
        super();
    }

    /**
     * @return String 取得域 decodeContent 的方法。
     */
    public String getDecodeContent() {
        return this.decodeContent;
    }

    public String getButtonComment() {
        return this.buttonComment;
    }

    public void setButtonComment(String buttonComment) {
        this.buttonComment = buttonComment;
    }

    public Long getEduId() {
        return this.eduId;
    }

    public void setEduId(Long eduId) {
        this.eduId = eduId;
    }

    public String getEduTitle() {
        return this.eduTitle;
    }

    public void setEduTitle(String eduTitle) {
        this.eduTitle = eduTitle;
    }

    public String getEduOrigin() {
        return this.eduOrigin;
    }

    public void setEduOrigin(String eduOrigin) {
        this.eduOrigin = eduOrigin;
    }

    public String getEduUrl() {
        return this.eduUrl;
    }

    public void setEduUrl(String eduUrl) {
        this.eduUrl = eduUrl;
    }

    public int getReadCount() {
        return this.readCount;
    }

    public void setReadCount(int readCount) {
        this.readCount = readCount;
    }

    public Integer getUrlType() {
        return this.urlType;
    }

    public void setUrlType(Integer urlType) {
        this.urlType = urlType;
    }

    public Integer getShare() {
        return this.share;
    }

    public void setShare(Integer share) {
        this.share = share;
    }

    @Override
    public String toString() {
        return "NoticePageVO [id=" + this.id + ", title=" + this.title + ", startTime=" + this.startTime + ", endTime=" + this.endTime + ", status=" + this.status
                + ", topicId=" + this.topicId + ", topic=" + this.topic + ", noticeType=" + this.noticeType + ", coverImg=" + this.coverImg + ", showCoverImg="
                + this.showCoverImg + ", content=" + this.content + ", decodeContent=" + this.decodeContent + ", buttonComment=" + this.buttonComment + ", eduId=" + this.eduId
                + ", eduTitle=" + this.eduTitle + ", eduOrigin=" + this.eduOrigin + ", eduUrl=" + this.eduUrl + ", readCount=" + this.readCount + ", urlType=" + this.urlType
                + ",share=" + this.share + "]";
    }

}
